package com.ruoyi.delivery.service;

import com.ruoyi.delivery.domain.DelDriver;

import java.util.List;

public interface IDelDriverService {
    /**
     * 分页查询司机信息
     *
     * @param logisticsDriver 所属物流商编号
     * @param driverNo        司机编号
     * @param driverCity      当前城市
     * @param driverPhone     联系方式
     * @param vehicleNo       驾驶车辆编号
     * @param startDate       入职时间开始范围
     * @param endDate         入职时间结束范围
     * @param driverState     状态
     * @param driverName      司机姓名
     * @param offset          分页偏移量
     * @param pageSize        分页大小
     * @return 司机信息列表
     */
    List<DelDriver> getDriverList(String logisticsDriver, String driverNo, String driverCity, String driverPhone,
                                  String vehicleNo, String startDate, String endDate, Integer driverState, String driverName,
                                  int offset, int pageSize);

    /**
     * 获取司机信息总记录数
     *
     * @param logisticsDriver 所属物流商编号
     * @param driverNo        司机编号
     * @param driverCity      当前城市
     * @param driverPhone     联系方式
     * @param vehicleNo       驾驶车辆编号
     * @param startDate       入职时间开始范围
     * @param endDate         入职时间结束范围
     * @param driverState     状态
     * @param driverName      司机姓名
     * @return 总记录数
     */
    int getDriverCount(String logisticsDriver, String driverNo, String driverCity, String driverPhone,
                       String vehicleNo, String startDate, String endDate, Integer driverState, String driverName);

    /**
     * 更新司机信息
     *
     * @param driver 司机信息对象
     * @return 更新影响的行数
     */
    int updateDriverInfo(DelDriver driver);

    /**
     * 删除单个司机
     *
     * @param driverNo 司机编号
     * @return 删除影响的行数
     */
    int deleteDriver(String driverNo);

    /**
     * 批量删除司机
     *
     * @param driverNos 司机编号集合
     * @return 删除影响的行数
     */
    int deleteDrivers(List<String> driverNos);

    /**
     * 新增司机信息
     *
     * @param driver 司机信息对象
     * @return 插入影响的行数
     */
    int insertDriverInfo(DelDriver driver);

    /**
     * 获取司机信息
     *
     * @param driverNo 司机编号
     * @return 司机信息
     */
    DelDriver getDriverInfo(String driverNo);

    /**
     * 根据openId查询司机信息
     *
     * @param openId 微信openId
     * @return 司机信息
     */
    DelDriver getDriverByOpenId(String openId);

    /**
     * 根据司机编号获取司机姓名
     *
     * @param driverId 司机编号
     * @return 司机姓名
     */
    boolean validateDriverNameById(String driverId, String driverName);

    /**
     * 更新司机openId
     *
     * @param driverId 司机编号
     * @param openId   微信openId
     * @return 更新影响的行数
     */
    int updateDriverOpenId(String driverId, String openId);
}
